import logging.handlers
import logging


def init_log_config(filename, when="midnight", interval=1, backup_count=7):
    """
    功能:初始化日志配置函数
    : param filename:日志文件名
    : param when:设定日志切分的时间间隔单位
    : param interval:间隔时间单位的个数,指等待多少个when
    : param backup_count:保留日志文件的个数
    : return:
    """
    # 1.创建日志器对象
    logger = logging.getLogger()
    # 2.设置日志打印级别
    logger.setLevel(logging.DEBUG)
    # logging:DEBUG:调试级别
    # logging:INFO:信息级别[次高]
    # logging:WARNING:警告级别[中]
    # logging:ERROR:错误级别[低]
    # logging:CRITICAL:严重错误级别[极低]
    #  3.创建处理器对象
    # 控制台对象
    st = logging.StreamHandler()
    # 日志文件对象
    fh = logging.handlers.TimedRotatingFileHandler("../log/a.log", when="midnight", backupCount=3, encoding="utf-8")
    """
    when:字符串,指定日期切分时间间隔单位,midnight,凌晨12点
    interval 是间隔时间单位的个数,指等待多少个when后继续进行日志记录
    backupcount 是保留日志文件的个数
    """
    # 创建日志信息格式
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] -%(message)s"
    formatter = logging.Formatter(fmt)
    # 将日志信息格式设置给处理器
    # 设置给控制台处理器
    st.setFormatter(formatter)
    # 设置给日志文件处理器
    fh.setFormatter(formatter)
    # 给日志添加处理器
    # 给日志对象添加控制台处理器
    logger.addHandler(st)
    # 给日志对象添加日志文件处理器
    logger.addHandler(fh)


if __name__ == '__main__':
    # 初始化日志
    init_log_config("a.log")
    logging.debug("我是一个调试级别日志")
